﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.PhonesManagement
{
    public interface IPhoneManagementService
    {
        /// <summary>
        /// Add a new phone.
        /// </summary>
        /// <param name="phone">Phone to be added</param>
        void AddPhone(Phone phone);

        /// <summary>
        /// Change existing phone.
        /// </summary>
        /// <param name="phone">Existing phone to be modified.</param>
        void ChangePhone(Phone phone);

        /// <summary>
        /// Find a phone by its Id.
        /// </summary>
        /// <param name="phoneId">PhoneId</param>
        /// <returns>A phone.</returns>
        Phone FindPhoneById(Guid phoneId);

        /// <summary>
        /// Find a phone by user Id.
        /// </summary>
        /// <param name="userId">Membership UserId</param>
        /// <returns>A phone.</returns>
        List<Phone> FindPhoneByUserId(Guid userId);

        /// <summary>
        /// Find a phone type with name match with <paramref name="phoneTypeName"/>
        /// </summary>
        /// <param name="phoneTypeName">A phone type name.</param>
        /// <returns>A collection of phone type.</returns>
        List<PhoneType> FindPhoneTypesByName(string phoneTypeName);


        /// <summary>
        /// Remove an existing phone.
        /// </summary>
        /// <param name="phone">A phone.</param>
        void RemovePhone(Phone phone);
    }
}
